大阪地方裁判所 平成10年(ワ)10259号 判決 2000年12月26日
原告
有限会社大和電機製作所
同代表者取締役
【A】
同訴訟代理人弁護士
越尾邦仁
被告
【B】
主文
1 被告は、原告に対し、金156万1400円を支払え。
2 原告のその余の請求を棄却する。
3 訴訟費用は、これを20分し、その1を被告、その余を原告の負担とする。
4 この判決は、第1項に限り、仮に執行することができる。
事実及び理由
第1請求
被告は、原告に対し、金3561万6000円を支払え。
第2事案の概要
1 争いのない事実等
(一) 当事者
(1) 原告は、大阪府豊中市において、マイクロコンピュータ応用機器・各種電子機器設計、製作、右機器のためのソフトウエア類の開発等を行っている有限会社であり、主要な業務は、①IC(集積回路)を測定・検査する機械の製作、②右機械を動かすソフトウエアの開発等である。
(2) 被告は、昭和55年の原告設立当初から、原告従業員として勤務していたコンピュータ技術者であるが、平成7年2月20日付けで原告を退社した。原告における被告の業務は、半導体を寄せ合わせてできあがったものを調整し、ハードウエア、ソフトウエアを含めて、システム全体を設計、製作、調整するというものであった。
(二) 原告は、昭和55年から、三菱電機株式会社(以下「三菱電機」という。)の依頼により、三菱電機製のICの性能を測定、検査するためのソフトウエアを組み込んだハードウエア(以下「マイコンテストボックス」という。)を作成して同社に納入し、その調整をしていた。
別紙本件プログラム目録記載のプログラム(以下「本件プログラム」という。)は、いずれも原告製作のマイコンテストボックスに組み込まれたプログラムである。
(三) 被告は、平成7年2月以降、三菱電機にマイコンテストボックスを納入しており、平成10年9月ころ、2個のICの性能を同時に測定する、別紙被告プログラム目録記載のプログラム(甲37の1~4、以下「被告プログラム(1)~(4)」という。)を作成し、被告プログラムを搭載したマイコンテストボックスを三菱電機に納品した。
2 原告は、被告が本件プログラムを不正取得し、改変を加えて三菱電機に納入することにより、原告の著作権(複製権、翻案権)を侵害したとして、被告に対し、損害賠償を求めた。
3 争点
(一) 本件プログラムは著作物か。
(二) 原告は、本件プログラムの著作者といえるか。
(三) 被告プログラムは、本件プログラムを複製又は翻案したものか。
(四) 三菱電機は、本件プログラムについて、複製権又は翻案権を有するか。
被告は、三菱電機の上記複製権、翻案権に基づいて、被告プログラムを作成したか。
(五) 損害額
第3争点に関する当事者の主張
1 争点(一)について
【原告の主張】
(一) Clock425.C(甲13の1)、M62425.C(甲13の2)、T62425.C(甲13の3)、OPU.H(甲13の4)とROMS.ASH(甲19)は、M62425のソフトウエアを構成するプログラムである。甲13の1~4はC言語で書かれているが、甲19はアッセンブラー言語で書かれており、本件プログラムすべてに必要なデバッグのためのソフトにリンクさせるためのソフトである。これらのプログラムを結合してコンパイル(機械語に翻訳)して一つのモジュールにし、それをテストボックスの中に実装してテストボックスを完成させる。
ROMS.ASH以外のファイル(甲13の1~4)内のC言語による個々の命令に著作権があるわけではないが、個々の命令が独自に組合わされて集合すると、その全体に著作権が発生する。
(二) Clock370.C(甲14の1)、T62370.C(甲14の2)、OPU.H(甲14の3)、M62370.C(甲14の4)とROMS.ASH(甲19)は、M62370のソフトウエアを構成するプログラムである。
(三) Clock352.C(甲15の1)、T62352.C(甲15の2)、OPU.H(甲15の3)、M62370.C(甲15の4)とROMS.ASH(甲19)は、M62352のソフトウエアを構成するプログラムである。
(四) Clock358.C(甲16の1)、M62358.C(甲16の2)、T62358.C(甲16の3)、OPU.H(甲16の4)とROMS.ASH(甲19)は、M62358のソフトウエアを構成するプログラムである。
(五) Clock359.C(甲17の1)、M62359.C(甲17の2)、T62359.C(甲17の3)、OPU.H(甲17の4)とROMS.ASH(甲19)は、M62359のソフトウエアを構成するプログラムである。
(六) Clock393.C(甲18の1)、T62393.C(甲18の2)、OPU.H(甲18の3)、T62393.C(甲18の4)とROMS.ASH(甲19)は、M62393のソフトウエアを構成するプログラムである。
本件プログラムは、最初に三菱電機から依頼されて原告が作成したM62393のソフトウエアを基本に、測定対象となるICに対応してソフトウエアに部分的に改変を加えたものであり、M62393を基本としたプログラム全体について原告に著作権がある。したがって、本件プログラムに原告に無断で部分的改変を加えることは、すべて基本となるM62393についての原告の著作権を侵害するものである。
【被告の主張】
争う。
2 争点(二)(原告の著作権)について
【原告の主張】
三菱電機の図面、仕様による目的物に関連したものに関して、原告が制作した物の特許権等の工業所有権については、原告と三菱電機の間でその帰属については協議すると定められているが(甲1・24条、甲2・27条)、三菱電機の図面に基づいて原告が作成したものは格別、原告が三菱電機の注文に基づいて独自に設計、開発、製作したものについては、右協議においても原告がその工業所有権を主張するのは当然であり、協議が行われていない場合には、その権利は原告に帰属する。
本件プログラムは、原告が独自の技術で製作したものであり、また、原告と三菱電機の間で工業所有権等についての協議がなされていないから、その著作権は原告に帰属するものである。
【被告の主張】
本件プログラムは、三菱電機の規格により三菱電機がメンテナンスするのを原則にして、細かい製品仕様の注文を三菱電機から受けているものであるから、原告が独自に開発した制作物ではなく、著作権は三菱電機にある。
三菱電機は本件プログラムのソースファイルを変更しているが、原告はこのファイル更新記録を持っていない。このことは、原告が、本件プログラムの著作権が三菱電機側にあると認識していることを示すものである。
4 争点(四)(複製、翻案)について
【原告の主張】
被告プログラムは、本件プログラム(4)(M62352)を構成するプログラム(甲36の1~4、以下「原告プログラム(1)ないし(4)」という。)に編集加工を加えて完成されている。その動作内容は、オリジナルが1個のICを測定するものであるのに対し、改造複製版は同時に2個のICを測定できるようにオリジナルに追加編集を施している。
これらについては、次のとおり、ファイル構成、開発環境及び基本ハード構成などのノウハウがすべて一致している。
(一) Clock352.C(甲36の1、甲37の1)
(1) 原告プログラム(1)(甲36の1)及び被告プログラム(1)(甲37の1)のA1を比較すると、被告プログラム(1)は、IC2個同時測定のため、原告プログラム(1)にポート番号と変数を追加宣言している(I1、I2、I3)以外は、若干の順序の変更以外全く同じであり、その他の宣言と、パターンパラメータの入った関数「t-title(str)」はそのまま添付されている。なお、星印は、前回使用して現在は必要ないのでコメントにした部分を示しているが、それがそのまま被告プログラム(1)に添付されて残っている。
(2) 被告プログラム(1)のE1、E2は、拡張のため、原告プログラム(1)のD1、D2部分を変更しているが、基本的にはほとんど同じである。被告プログラム(1)のE3からE6も同様で、原告プログラム(1)のD3からD6を変更しているが、ハードウエアの駆動タイミングもすべて同じで、原告プログラム(1)で開発したものを引き継いでいる。これは、ポートの配置が変わったための変更に過ぎない。
(3) 原告プログラム(1)と被告プログラム(1)のA2、A3は、サンプリングデータの平均値を求める関数であるが、原告プログラム(1)のA3・8行目以下の「adc21()」という関数が、被告プログラム(1)では「adc2()」となるという、若干の修正をしているのみである。
(4) 被告プログラム(1)のE7、E8は、原告プログラム(1)のA2を複製したもので、2個目のICを測定するため、次の関数を変更したのみである。
① 原告プログラム(1)のA2・2行目の「adconv()」を、被告プログラム(1)のE7・3行目では「adcH2v()」に変更した。
② 原告プログラム(1)のA2・7行目の「adc()」を、被告プログラム(1)のE7・8行目では「adcH2()」に変更した。
また、被告プログラム(1)のE9、E10も、原告プログラム(1)のA3を複製したもので、次の関数を変更したのみである。
③ 原告プログラム(1)のA3・2行目の関数名「ad2conv()」を、被告プログラム(1)のE9・3行目では「ad2cHv()」に変更した。
④ 原告プログラム(1)のA2・7行目以降の関数名「adc()」を、被告プログラム(1)のE9・8行目以下の「adc2H2()」に変更した。
(5) 原告プログラム(1)と被告プログラム(1)のA4は、アナログマルチプレクサーのセレクト関数で、測定系を切り替える関数である。被告プログラム(1)のA4の最初の13行は、原告プログラム(1)のA4をそのまま複製したもので、オリジナルと全く同じ命令が使われている。
また、被告プログラム(1)のE11は、A4のポート番地を変更したもので、原告プログラム(1)のA4・4行目では「PPIB」となっているのを、被告プログラム(1)のE11では「PPIB+H2」に修正されている。
(6) A5はアナログ測定関数で、被告プログラム(1)では、原告プログラム(1)のオリジナルファイルを添付し、E12、E13の行の追加だけを行っている。これは、1行上の文を複製し、拡張のためにオリジナルファイルの「PPIB」を「PPIB+H2」として、アナログマルチプレクサーを制御しているに過ぎない。
なお、ここで手書きの星印で2カ所指摘しているが、この行は、原告プログラム(1)の開発時に調整用に入れていた命令で、本番の時は使用しないのでコメントにしているものである。すなわち、原告プログラム(1)と被告プログラム(1)は、コメント部分にも全く同じ箇所があり、これは、被告プログラム(1)が原告プログラム(1)をコピーした上で若干の編集を行ったことを示す証左である。
(7) 被告プログラム(1)のE14、E15は、原告プログラム(1)のA5を複製したもので、次の関数を変更したのみである。
① 原告プログラム(1)のA5・1行目の関数名「adcon5v(s)」を被告プログラム(1)のE15・1行目では「adcH215v(s)」に変更した。
② 原告プログラム(1)のA5・5行目の変数名「lmt_gain」を被告プログラム(1)のE14・5行目の「lmtH2_gain」に変更した。
③ 原告プログラム(1)のA5・8行目の「PPIB」を被告プログラム(1)のE14・8行目の「PPIB+H2」に変更した。
④ 原告プログラム(1)のA5・18行目の「ad2_gain」を被告プログラム(1)のE15の5行目(被告プログラム(1)のE14から数えて18行目)の「ad2H2_gain」に変更した。
⑤ 原告プログラム(1)のA5の最後から2行目の「ad2_zero」を被告プログラム(1)のE15の最後から2行目の「ad2H2_zero」に修正した。
また、E14にも1行星印が出てくるが、前述の説明と同じで、複製を行ったことを明確に表示している。
(8) A6は、アナログのスケールの校正関数で、基準値を校正する働きをする。被告プログラム(1)は、原告プログラム(1)と同じであるが、回路構成が拡大したために、回路動作を安定させるためにマルチプレクサー制御を行った後に、被告プログラム(1)のA6の4行目にウエイト(p_wait)を挿入している。
(9) 被告プログラム(1)のE16、E17は、原告プログラム(1)のA6を複製したもので、次の修正を加えているが、これも、2個のICを測定するための修正に過ぎず、基本的には同じものである。
① 原告プログラム(1)のA6・1行目の関数名「ad_clb1()」を被告プログラム(1)のE16・1行目の「adH2_clb1()」に、
② A6・12行目の「ad_clb2()」をE17・1行目(E16の14行目で、ウエイトが4行目と7行目に置かれているため2行分の誤差が出る)の「adH2_clb2()」に、
③ A6・4行目の「adconv_x()」をE16・5行目(4行目にウエイトがあるため1行分の誤差が出る)の「adcH2_x()」に、
④ A6・15行目の「ad2conv_x()」をE17・5行目(E16の18行目で、ウエイトが4行目、7行目、17行目に置かれているため3行分の誤差が出る)の「ad2cH2_x()」に、
⑤ A6・14行目の変数名「PPIB」をE17・3行目(E16の16行目で、ウエイトが4行目、7行目に置かれているため2行分の誤差が出る)の「PPIB+H2」に、
⑥ A6・6行目の「ad_zero」をE16・8行目の「adH2_zero」に、A6・15行目の「ad2_full」をE17・5行目(E16の18行目で、ウエイトが4行目、7行目、17行目に置かれているため2行分の誤差が出る)の「ad2H2_full」に、
⑦ A6・9行目の「ad_gain」をE16・11行目(ウエイトが4行目と7行目に置かれているため2行分の誤差が出る)の「adH2_gain」に、
⑧ A6・17行目の「ad2_zero」をE17の8行目(E16の21行目で、誤差の理由は前述と同じ)の「ad2H2_zero」に、
⑨ A6・最後から3行目の「ad2_gain」をE17の最後から3行目の「ad2H2_gain」に
(10) A7は波形出力関数で、被告プログラム(1)では、ポート配置変更のためと2個目のIC測定のために若干の変更をしているが、原告プログラム(1)と機能は同じである。また、星印は前述と同じで、複製したことの痕跡である。
(11) A8も波形出力関数で、被告プログラム(1)では、原告プログラム(1)を複製した後拡張修正されている。被告プログラム(1)のA8では、10行目のコメント「RUN PULS」(原告プログラム(1)では11行目)の後、出力関数「outpp」関数(原告プログラム(1)では「out p」)の数が多くなっているのは、回路が拡張拡大したことから、安定的に動作させるために、前より4つ多く付け加えているにすぎない。
また、星印があるが、前述と意味は同じで、複製したことの痕跡である。
次に、被告プログラム(1)E19は、原告プログラム(1)D19を削除して、拡張分の対応が可能になるよう組み替えただけで、機能は全く同じであり、2個測定に対応させている。次のコメント「RUN PULS」も上記と同じで、出力関数「outpp」を安定動作のため5つ多く付け加えているにすぎない。
被告プログラム(1)E20は、原告プログラム(1)D20を削除して、上記E19と同じ内容の処理をしているに過ぎない。次のコメント「RUN PULS」の処理のところも上記と同じで5つ多く付け加えているにすぎない。
(12) A9は、規格値をセットする関数で、被告プログラム(1)では、原告プログラム(1)をそのまま複製しており、コメントの表現も全く同じである。
(13) A10はテスト処理関係で、被告プログラム(1)のE21は原告プログラム(1)のD21を、E22はD22を、E23はD23をそれぞれ参考にして2個測定用に組み替えたもので、その処理の仕方は同じである。
(14) 原告プログラム(1)及び被告プログラム(1)のA11は特殊通信ブロックの初期化関数で、オリジナルと同一である。
(15) A12は入出力回路の初期化関数で、被告プログラム(1)では、原告プログラム(1)を複製した後、E24、E25、E26部分の拡張部の初期化を追加しているのみである。原告プログラム(1)を複製しているので、原告プログラム(1)のコメント(/*と*/で囲まれた部分)などは、そのまま一致している。
(16) A13は特殊通信ブロックの関数で、ホストとコミュニケーションする関数である。被告プログラム(1)では、ポートの変更により、E27部分からE30部分まで組み替えているが、動作、機能は原告プログラム(1)と同一であり、最後の2つの関数(「mbox_rd4(p)」,「mbox_wr4(p,d)」)は原告プログラム(1)と同一である。
(17) A14はリレー(切り換えスイッチ)とウエイトの関数で、被告プログラム(1)では、ポート拡張のため組み替えているが、動作、機能は原告プログラム(1)と同一である。
(三) T62352.C(甲36の2及び甲37の2)
(1) 被告プログラム(2)(甲36の2)及び原告プログラム(2)(甲37の2)のA1を比較すると、被告プログラム(2)は、オリジナルファイルである原告プログラム(2)を複製コピーし、拡張測定のためI1からI4に変数名の追加を行っているが、それ以外は全て原告プログラム(2)と同一である。
(2) A2はメインルーチンで、ここからプログラムがスタートする。被告プログラム(2)では、原告プログラム(2)にE1、E2の追加修正と、I5の新規挿入をしているが、追加修正は変数の拡張で、「hanteiH2」「data_a, data_b」を追加している。また、被告プログラム(2)のE2の変更は、原告プログラム(2)のA2・13行目の「FAILSTOP」を「ALLTEST」にモードを変更しているにすぎない。
被告プログラム(2)のI5ではテスターとバージョンの表示を挿入しているのみである。
(3) A3は無限ループの始まりで、被告プログラム(2)では、原告プログラム(2)そのままに、プログラムはこのループを無限に回り続ける。
(4) A4はスイッチ文の始まりで、ホストよりの指令を解読して指定された作業を実行する。
① 被告プログラム(2)では、I6の追加挿入で「case 255」において、「BYE BYE !!」をプリントする文が追加されているのみである。
② 被告プログラム(2)では、「case SELF_TST」において、I7からI9までが追加挿入され、E3からE10まで拡張修正され、C1にコメントが追加されているが、2個測定のための追加修正にすぎず、動作、機能は、原告プログラム(2)と同じである。
ⅰ E3は、原告プログラム(2)では5行目の「ad_clb1()」だったものを、I7で変数に取り込み、その変数名を「data_a」に修正されている。これは2個同時測定のための追加で、原告プログラム(2)をベースにしたものである。
ⅱ E4では、E3の変数名「MXDATA」と「data_a」を「MXDATB」と「data_b」に変えることで、もう一つのチャンネルの測定を可能にしている。
ⅲ I8とI8Bは、プリント文の追加挿入である。
ⅳ I9、E5、E6は、I7、E3、E4と同じ手法で拡張修正している。
ⅴ E7は、原告プログラム(2)のA4の14行目を複製した上、番号「ALL」から「1」に変更するのみであり、ウエイトの追加は、タイミング調整のために入れたものにすぎない。
ⅵ C1部分は、コメントの新たな追加のみである。
ⅶ E8は、原告プログラム(2)のA4・16~17行目のオリジナル文を複製し、変数名を「MXDATB」と「ad2H_zero」と「ad2cH2_x」と「ad2H2_gain」に拡張修正しているのみである。
ⅷ E9は、E7と同じ手法で修正している。
ⅸ E10では、甲36の2のA4の23、24行目を複製して修正変更している。その変更は「MXDATB」と「ad2H2_zero」と「ad2cH2_x」と「ad2H2_gain」に拡張修正して対応させている。
ⅹ E11は、これも拡張のため、甲36の2の1頁目下から14行目の行を複製し、変更修正している。その内容は、「PPICW」を「PPICW+H2」として2個測定に対応している。
③ 「case TEST」(原告プログラム(2)の1頁最後から11行目以下、被告プログラム(2)の2頁目のI10の2行上以下)で、I10、E12、E13、C2、C3の追加編集があるのみである。
I10は1行上の命令を、拡張のため変数名を「failH2_point」と変更している。E13はE12の2行下からの複製で、「MXSP+2」と「failH2_point」と「hanteiH2」と「PPICW+H2」に修正変更されて完成している。
④ 「case DAT_REQ」(原告プログラム(2)の2頁目6行目以下、被告プログラム(2)の2頁目のE14の1行上以下)で、E14は記述を変更しているが、内容は原告プログラム(2)と同じで、プリント文のみ新規追加されている。
E14下の星印は、原告プログラム(2)で調整用で使用していた命令であるが(原告プログラム(2)・2頁目14行目)、現在は必要がないのでコメントにしている。これもこのまま残っているということは、被告プログラム(2)が原告プログラム(2)をベースにして編集したという事実の痕跡である。
⑤ E15はE14の複製で、拡張用に変数を追加修正されたものである。内容は「t_dataH2」「MXDATB」に変更修正している。E15の中にも星印の意味の痕跡が残っている。
⑥ 「case LMT_REQ」(原告プログラム(2)の2頁目16行以下、被告プログラム(2)の2頁目の最後から2行目以下)においては、被告プログラム(2)と原告プログラム(2)は同一であり、E16は「case LMT_REQ」の下の文を複製して変数名を「LIMITH2」「MXDATB」の変数名に追加修正して完成している。
⑦ 「case LMT_CHG」(原告プログラム(2)の2頁目33行以下、被告プログラム(2)の2頁目のE16の2行下以下)においては、被告プログラム(2)と原告プログラム(2)は同一である。原告プログラム(2)の3頁の星印部分と被告プログラム(2)の2頁目下から32行目以下に、「case CLK_REQ」と「case CLK_CHG」があるが、オリジナルの時デバッグ(調整)用に使用した部分で、現在はコメントにしている。このコメントも複製の事実の痕跡を明らかにしている。
⑧ 「case SET_ALLT」「case SET_FSTP」「case SET_MAE」「caseSET_ATO」「case ASK_MODE」「case SET_ADMODE」と続くが、この部分でも、被告プログラム(2)と原告プログラム(2)はすべて同一である。
⑨ 「case 20」(被告プログラム(2)の4頁14行目以下)の中にE17が含まれているが、処理内容は原告プログラム(2)と同じで、前に取り込んだテストコマンドを参照している。
⑩ 「case 21」から「case 29」まではオリジナルと完全一致しており、「case 30」から「case 32」までは新規追加分である。ここまでがスイッチ文である。
(5) 被告プログラム(2)の5頁のA5に、E18があるが、これは特殊通信でホストにアック信号を送信するもので、オリジナルと同じ動作であるが、ポートの配置を変更しているので記述を変えて表現している。
(四) OPU.H(甲36の3及び甲37の3)
被告プログラム(3)(甲37の3)のI1からI4は、2個測定のため追加拡張しているだけである。同様に、E1からE4は2個測定のために番地を変更しているだけである。C部分はコメントに変更している。そのほかはすべて原告プログラム(3)(甲36の3)と一致する。
(五) M62352.C(甲36の4及び甲36の4)
(1) 被告プログラム(4)(甲37の4)のI1からI5は、2個測定のために追加されたもの、E1は2個測定のための変数の拡張宣言、△印のE3からE42とE47からE74とE80とE81は2個測定用に判定命令を組み替えている。しかし、その動作内容は、原告プログラム(4)(甲36の4)と同じである。
(2) 被告プログラム(4)のE43からE46は、その1行上の文を追加拡張したもので、変数名の後に「H2」を付加して2個測定に対応できるよう変数名を変更している。
原告プログラム(4)にあるD43、44は削除されている。
被告プログラム(4)のE75、E77は、2個測定のための変数の追加で、E76とE78は原告プログラム(4)のD76とD78を変更したもので、2個測定に対応できるように拡張変更されている。
被告プログラム(4)のE79、E81は、2個測定のための拡張変数である。
被告プログラム(4)のE83はその上の「ch_gain_gosa」関数を複製し、変数の後に「H2」を付加して「ch_gainH2_gosa」関数を完成させている。
被告プログラム(4)のI3では、プリント文で品種名とバージョンと製作年月日を確認できる。そして、その下の2行に注目すると、初版のオリジナルで記入した製作年月日(甲36の4では1頁目の30行目以下)がそのまま消されずに残っている。これは、改造複製された証左である。
【被告の主張】
被告は、三菱電機から、①従来のテストで実績のある1ヘッド装置のプログラム互換を持つこと、②他品種のICを同一ハードウエアで測定できること、という基本条件で、2個のICを同時に測定するためのプログラムを開発受注した。そのため、三菱電機から、インターネットメールやフロッピーにより、M62352のソースファイルの提供を受けてその改造作業を請け負い、高速化モジュールの開発を行ってテスト時間の短縮を実現した。テスト時間も従来の5倍近い速度を達成するため従来1チップCPUとEPROMで制御していたものを高速の市販ノートパソコンで制御できる方法を開発したり、一番時間を消費していたクロックゼネレータ回路の開発を行った。
従来1個のICだけを測定していたシステムを2個同時に測定できるようにするには、測定回路、周辺の拡張、良品、不良の場合の処理、測定速度の向上、測定結果の編集作業その他多くの作業があり、変数拡張とタイミング調整で行うのは技術的に無理であり、開発部分が請け負った作業の大半を占めるものであった。
以上のとおり、被告が開発したのは、本件プログラムより数倍の処理能力を持つ新型テストボックスである。
4 争点(四)(三菱電機の複製、翻案権)
【被告の主張】
本件ソフトウエアについては、三菱電機が複製権を有しており、複製権に基づき製品のテストプログラムをメンテナンスしている。被告は、本件ソフトウエアのソースファイルを三菱電機から入手し、三菱電機の複製権に基づいて被告プログラムを開発した。
【原告の主張】
三菱電機は、本件プログラムの複製権を有しない。
原告は、M62393FPテストボックスの納入時に、ソフトウエアのソースファイルを含めて、すべての関係ファイルを納品することはなかった。
5 争点5(損害)
【原告の主張】
被告が原告を退社する直前3か月間における原告のM62393マイコンテストボックスの売上は166万円であり、同期間におけるFT-M62425FP-MT1200の売上は287万円であるから、被告が原告を退社する直前3か月間における本件ソフトウエア類による原告の売上は453万円であり、本訴を提起した平成10年9月までの予想利益は3261万6000円である。さらに、右金員に弁護士費用300万円を加えると、原告の損害は3561万6000円となる。
【被告の主張】
原告において、専用ICのテスター売上が被告の退社前に定常的に続いたことはなかったから、被告が原告を退社する直前3か月間の売上を根拠に損害を算出することは不当である。
第4争点に対する判断
1 争点(一)(本件プログラムの著作物性)について
プログラムとは、「電子計算機を機能させて一の結果を得ることができるようにこれに対する指令を組み合せたものとして表現したもの」(著作権法2条1項10号の2)であり、著作物として保護されるためには創作性(著作権法2条1項1号)を必要とする。
証拠(甲13~18の各1~4、19、21~35、38)によれば、本件プログラムは、それぞれC言語により書かれた数百行の命令からなるプログラム4個と、アッセンブラー言語により書かれたプログラム(甲19)との組み合わせによって成立し、三菱電機が製造した1品種のICの測定を行う目的を有するものである。
そして、その動作は、M62352を構成するプログラムであるT62352を例にとると、①START処理(ハードの初期化)、②無限ループ処理(汎用テスターからの指令が来ると③のswitch文処理を行い、その結果をメールBOXに渡して次の指令を待つ。)、③switch文処理(指令値に応じて、④ないし⑱の処理を実行する。)、④SELF_TST処理(MXMODEの値が1、2の時は、電圧測定器の校正を行ってから10項目のatest処理〔検査対象ICに検査条件値を入力して、ICからの出力を測定する処理〕を行って終了し、3、4の時は、MXPARAのクロックを出力して値を測定して終了する。)、⑤TEST処理(atest処理の中の指令のJOBを実行して結果を返し、テストカウントに1を加算して終了する。)、⑥DAT_REQ処理(データが0以下かの判断でメールBOXにデータと0かffを返す。)、⑦LMT_REQ処理(リミットが0以下かの判断でメールBOXにリミットと0か1を返す。)、⑧LMT_CHG処理(テスト規格値を入れ替える。)、⑨SET_MAE処理(10項目のMAEのattestを行って終了する。)、⑩SET_ATO処理(10項目のATOのatest処理を行って終了する。)、⑪指令値20の処理(メールBOXの指示が0になるまで指定の項目のatest処理を実行する。)、⑫指令値21と22の処理(t_data[n]を0に初期化して、アナログマルチプレクサーを切り替えながら、指令値21の時はA/Dコンバータによる測定関数adcon15vで、指令値22の時は同adcon5vでデータを取り込む。)、⑬指令値23と24の処理(指定のパターンを出力し、t_data[n]を初期化した後、t_data[n]に128個のデータをA/Dコンバータによる測定関数adcon15vより取り込む。)、⑭指令値25の処理(メールBOXの指示により2つのパターンを発生しながらadconvでデータを取る動作を繰り返す。)、⑮指令値26の処理(メールBOXの指示により、パターン発生を繰り返す。)、⑯指令値27の処理(t_data[n]を初期化後、メールBOXの指示により、2つのパターンを発生させてt_data[n]にadcon5vよりデータを取り込む。)、⑰指令値28の処理(メールBOXより指定のリレーを駆動する。)、⑱指令値29の処理(メールBOXより指定のwaitを発生させる。)という順序により、マイコン制御基板と交信して測定を行うものである(甲38、原告代表者本人)。
上記事実によれば、本件プログラムは、プログラム中の命令の組み合わせ、モジュールの選択、通信方式、解決手段の選択等に創作性が認められる著作物であるということができる。
2 争点(二)(本件プログラムの著作権者)について
(一) 証拠(甲1、2、原告代表者本人)によれば、原告は、昭和56年4月24日、三菱電機北伊丹製作所との間で、資材、機器、物品の売買または製造委託に関して購買基本契約(以下「基本契約」という。)を締結し、昭和58年5月24日、契約を更新したこと、基本契約には、工業所有権について、①原告は三菱電機の図面、仕様による目的物に関連し、特許権、実用新案権、意匠権、商標権などの工業所有権の申請を行なう場合は、事前にその旨を三菱電機に申し出文書による承諾を得なければならないものとする、②前項による工業所有権の帰属については、原告と三菱電機が協議して定めるものとするという趣旨の定めがあることが認められるが(甲1・24条、甲2・27条)、本件プログラムについては、原告と三菱電機の間に、著作権の帰属に関する協議がされたことを認めるに足りる証拠はない。
また、証拠(原告代表者本人、被告本人)によれば、原告は、昭和56年ころ、三菱電機から、ICチップの測定処理時間を短縮してほしいとの依頼を受けて、基本契約に基づいて、M62393を乗せたマイコンテストボックスを作成し、その後も、三菱電機が新種のICを作る度に、三菱電機から同種ICに合わせた新型マイコンテストボックスの発注を受けていたこと、その際、三菱電機から原告に対しては、ICの測定仕様書又はデバイス仕様書が送付されたが、プログラムの作成に必要なアルゴリズム等の提供はなかったこと、原告において、本件プログラムの作成を担当していた従業員は、被告であり、被告は、三菱電機から送付された仕様書に記載されていた電流電圧の印加条件に基づき、入出力波形をグラフでコーディングし、それを数値に置き換えてプログラムを作成した上、プログラムに合わせて基盤を設定していたことが認められる。
(二) これらの事実を総合すれば、三菱電機は、原告に対し、本件プログラムを乗せたマイコンテストボックスの製作を依頼し、原告が独自に制作したソフトウエアを乗せたハードウエアの買主若しくはプログラムの発注者にすぎないものと推認され、本件プログラムは、当時、原告の従業員であった被告が、原告の発意に基づき、原告の職務として作成したものと認められる。そして、上記(一)のとおり、本件プログラムについては、原告と三菱電機の間において、著作権の帰属に関する協議が存在したことを認めるに足りる証拠はないから、本件プログラムの著作権は、被告の使用者である原告に原始的に帰属するというべきである(著作権法15条2項)。
3 争点(三)(複製、翻案)について
(一) 証拠(乙4、被告本人)によれば、被告は、原告を退社した後の平成7年夏ころ、三菱電機に対し、2個のICを同時に測定する機能を有するマイコンテストボックスの企画を持ち込み、平成10年9月ころ、三菱電機からその発注を受けたこと、被告は、三菱電機からM62352、M62358、M62359のプログラムの貸与を受け、M62352を構成するプログラムに編集を加える手法により被告プログラムを作成し、平成10年9月25日これを三菱電機に納品したことが認められる。以上の事実によれば、被告は、被告プログラム(1)~(4)を作成するに当たり、原告プログラム(1)~(4)に依拠していたといえる。
(二) M62352を構成する各プログラム(原告プログラム(1)~(4)、甲36の1~4)と、被告プログラム(1)~(4)のソース・コードを比較すると、その類似点及び相違点は、次のとおりである。
(1) Clock352.C
① A1
ⅰ 被告プログラム(1)A1(以下「被告(1)A1」のように表記する。)は、I1、I2、I3を追加した以外は、ほとんど原告プログラム(1)A1(以下「原告(1)A1」のように表記する。)と同一の命令、関数が使用されている。
被告(1)I3のうち、「extern long t_dataH2[7000],LIMITH2[7000][2], kikakuH2[4]」、「extern float adH2_gain, ad2H2_gain,lmtH2_gain;」、「extern unsigned int adH2_full, adH2_zero」、「externunsigned int ad2H2_ts1000, ad2H2_full, ad2H2_zero」は、いずれも原告プログラム(1)中のデータ名に「H2」を付加したものである。
なお、原告(1)A1・80行「/* return(printf("\n%s",str));*/」は、不要になった関数をコメント行にした部分であるが、被告(1)A1・80行にもコメント行として残っている。
ⅱ 被告(1)E1は、入力関数「inpp(p)」をあらわす部分であり、原告(1)D1とは、引数の型を宣言する「unsigned int p;」以外に一致する部分がない。また、被告(1)E2は、出力関数「char outpp(p,dt)」をあらわす部分であり、原告(1)D2とは、引数の型を宣言する「unsigned int p;」「char dt;」以外に一致する部分がない。
ⅲ 被告(1)A1のうち、アナログメジャー関数をあらわすE3、E4、E5、E6は、これに対応する原告(1) A1中のD3、D4、D5、D6とはほとんど一致する部分がない。
② A2
被告(1)A2は、原告(1)A2と同じく、CH1(チャンネル1)の4回計測の平均関数及びCH1の20回計測の平均関数をあらわす部分である。被告(1)・A2は、8~10行目が原告(1)・A2の8~10行目末尾の「adc1()」を「adc()」に置換したものであり、21行目が原告(1)A2・21行目末尾の「adc1()」を「adc()」に置換した以外は、すべて同一である。
③ A3
ⅰ 被告(1)A3は、原告(1)A3と同じく、CH1の4回計測の平均関数及びCH1の20回計測の平均関数をあらわす部分である。被告(1)A3は、8~10行目が原告(1)A2の8~10行目末尾の「adc21()」を「adc2()」に置換したものであり、21行目が原告(1)A2・21行目末尾の「adc1()」を「adc2()」に置換したほかは、すべて同一である。
ⅱ 被告(1)E7は、4回計測の平均関数をCH2用にした関数「adcH2v()」であり、原告(1)A2・1~12行の関数「adconv()」に相当する。被告(1)E7は、2行目にコメント行「/*5v*/」が挿入されており、8行目が原告(1)A2・7行目末尾の「adc()」を「adcH2()」に変更し、9~11行が、原告(1)A2・8~10行末尾の「adc1()」を「adcH2()」に置換したものであるほかは、すべて原告(1)A2の関数「adconv()」と同一である。
ⅲ 被告(1)E8は、20回計測の平均関数をCH2用にした関数「adcH2_x()」であり、原告(1)A2・13~23行の関数「adconv_x()」に相当する。被告(1)E8は、7行目が原告(1)A2・19行目末尾の「adc()」を「adcH2()」に変更したものであり、9行目が原告(1)A2・21行目末尾の「adc1()」を「adcH2()」に変更したものであるほかは、すべて原告(1)A2の関数「adconv()」と同一である。
ⅳ 被告(1)E9は、4回計測の平均関数をCH2用にした関数「ad2cH2v()」であり、原告(1)A3の1~12行の関数「ad2conv()」に相当する。被告(1)E9は、2行目にコメント行「/* 15v*/」が挿入され、8行目は原告(1)A3・7行目末尾の「adc2()」を「adc2H2()」に変更したものであり、9~11行目は、原告(1)A3・8~10行末尾の「adc21()」を「adc2H2()」に変更したものであり、そのほかは、すべて原告(1)A3の関数「ad2conv()」と同一である。
ⅴ 被告(1)E10は、20回計測の平均関数をCH2用にした関数「ad2cH2_x()」であり、原告(1)A3の13~23行の関数「adconv_x()」に相当する。被告(1)E10は、7行目が原告(1)A3・19行目末尾の「adc2()」を「adc2H2()」に変更したものであり、9行目が原告(1)A3・21行目末尾の「adc21()」を「adc2H2()」に変更したものであり、そのほかは、すべて原告(1)A3の関数「ad2conv_x()」と同一である。
④ A4
ⅰ 被告(1)A4は、原告(1)A4と同じく、アナログマルチプレクサーのセレクト関数をあらわす部分である。原告(1)A4では、「outp(PPIB, inp(PPIB)&; 0xf0 | s ); /*analog MPX select */」(4行目)の処理を行うのみであるが、被告(1)A4・4~13行は原告(1)A4・4行目を「outp」を「outpp」に、「inp」を「inpp」に変更し、10回繰返したものである。
ⅱ 被告(1)E11は、原告(1)A4・4行目の「PPIB」を2ヘッドに対応するよう「PPIB+H2」に変更し、「outpp(PPIB+H2, inpp(PPIB+H2) &; 0xf0 | s );/*analog MPX select */」としたものを10行繰り返したものである。
⑤ A5
ⅰ 被告(1)A5・1~28行は、アナログメジャー関数をあらわす部分であり、原告(1)A5に対応する。被告(1)A5は、9行目(E12)が原告(1)A5・8行目の「outp(PPIB, inp(PPIB)&;0xf0 | s); /* analog MPX select */」を2ヘッドに対応するよう「outpp (PPIB+H2, inpp(PPIB+H2)&;0xf0 | s); /* analog MPXselect */」」に変更したものであり、23行目(E13)が原告(1)A5・21行目の「PPIB」を2ヘッドに対応するよう「PPIB+H2」に変更したものであるほかは、原告(1)A5と同じである。
このうち、被告(1)A5・12行目及び26行目は、原告(1)A5の不要になった関数をコメント行にした部分がそのまま残っている。
ⅱ 被告(1)E14の関数「adcH25v(s)」は、原告(1)A5・1~13行の関数「adcon5v(s)」に対応し、5行目が原告(1)A5・5行目のデータ名に2ヘッドをあらわす「H2」を付加したものであり、8行目が原告(1)A5・8行目の「PPIB」を「PPIB+H2」に変更したものであり、10行目が原告(1)A5・10行目末尾「adc()」を「adcH2()」に変更したものであり、12行目が原告(1)A5・12行の「ad_gain」を「adH2_gain」に、「adconv()」を「adcH2v()」に変更したものである。そのほかは、すべて原告(1)A5と同じである。
ⅳ 被告(1)E15の関数「adH215v(s)」は、原告(1)A5・14~26行の関数「adcon15v(s)」に対応し、5行目「lmtH2_gain=ad2H2_gain」は、原告(1)A5・18行目「lmt_gain=ad2_gain」のデータ名に「H2」を付加したものであり、8行目が原告(1)A5・21行目「PPIB」を「PPIB+H2」に変更したものであり、10行目「return(ad2H2_zero - adc2H2());」は、原告(1)A5・24行「return(ad2_zero- adc2());」のデータ名に「H2」を付加したものであり、11行目が原告(1)A5・25行の「ad2_gain」を「ad2H2_gain」に、「ad2conv()」を「ad2cH2v()」に変更したものである。そのほかは、すべて原告(1)A5と同じである。
⑥ A6
ⅰ 被告(1)A6は、アナログメジャーのスケールの校正関数をあらわす部分であり、原告(1)A6と同一の関数から成っているが、4、7、17、20行目に「p_wait(1)」という、タイミングを取るための命令が挿入されている。
ⅱ 被告(1)E16の関数「adH2_clb1()」は、原告(1)A6・1~11行の関数「ad_clb1()」に対応する。3行目が原告(1)A6・3行目の「outp(PPIB,inp(PPIB)&;0xf0 | 14)」を「outpp (PPIB+H2, inpp(PPIB+H2)&;0xf0 | 14)」に変更したもの、5行目が原告(1)A6・4行目「ad_full」「adconv_x();」を「adH2_full 」「adcH2_x();」に変更したもの、6行目が原告(1)A6・5行目の「outp(PPIB, inp(PPIB)&;0xf0 | 15)」「PPIB」を「outpp (PPIB+H2,inpp(PPIB+H2)&;0xf0 | 15)」に変更したもの、8行目が原告(1)A6・6行目の「ad_zero」「adconv_x()」を「adH2_zero」「adcH2_x()」に変更したもの、9行目、11行目、12行目が、原告(1)A6・7行目、9行目、11行目のデータ名に「H2」を付加したものである。また、被告E16・4行目、7行目には、「p_wait(1)」という、タイミングを取るための命令が挿入されている。
ⅲ 被告(1)E17の関数「adH2_clb2()」は、原告(1)A6・12~22の関数「ad_clb2()」に対応する。3行目が原告(1)A6・14行目の「outp(PPIB,inp(PPIB)&;0xf0 | 14)」を「outpp (PPIB+H2, inpp(PPIB+H2)&;0xf0 | 14)」に変更したもの、5行目が原告(1)A6・15行目「ad2_full」「ad2conv_x()」を「ad2H2_full 」「ad2cH2_x()」に変更したもの、6行目が原告(1)A6・16行目の「outp(PPIB, inp(PPIB)&;0xf0 | 15)」を「outpp (PPIB+H2, inpp(PPIB+H2)&;0xf0| 15)」に変更したもの、8行目が原告(1)A6・17行目の「ad2_zero」「ad2conv_x()」を「ad2H2_zero」「ad2cH2_x()」に変更したもの、9行目、11行目、12行目が、原告(1)A6・18行目、20行目、21行目のデータ名に「H2」を付加したものである。また、被告E17・4行目、7行目には、「p_wait(1)」という、タイミングを取るための命令が挿入されている。
⑦ A7
この部分は、波形出力関数をあらわす部分である。
被告(1)E18は、出力ポートの変更により、原告(1)D18を組み替え2チャンネル用に変更したものであり、1~7行は、原告(1)D18・1~3行、5~8行と一致する。このうち、被告(1)E18・5~7行は、原告(1)D18・6~8行の不要になった命令をコメント行にした部分がそのまま残っている。
⑧ A8
ⅰ 被告(1)A8・1~10行は、原告(1)A8・1~6、8~11行と一致し、被告(1)A8・11~17行は、原告(1)A8・12~14行の「outp」を「outpp」に変更した「outpp(PPICW,4);/* 8255 pc2 reset */」が繰り返されており、被告(1)A8・18~21行は、原告(1)15~18行と一致する。このうち、被告(1)A8・21行は、原告(1)A8・18行の不要になった命令をコメント行にした部分がそのまま残っている。
ⅱ E19は、原告(1)D19を、E20は、原告(1)D20を、それぞれ組み替え2チャンネル用に変更したものであり、そのほかは、原告(1)A8にある関数が繰り返し使用されている。
⑨ A9
この部分は、原告(1)と被告(1)とで一致する。
⑩ A10
被告(1)E21は、原告(1)D21を、被告(1)E22は、原告(1)D22を、被告(1)E23は、原告(1)D23をそれぞれ2測定用に追加変更したものである。
ⅰ E21は、6行目以下において、1個目の測定用のデータ名について、D21・4行以下のデータ名と同一のものを使用した上、2個目の測定用のデータ名について、「LIMIT」を「LIMITH2」に、「lmt_gain」を「lmtH2_gain」に変更して付け加えている。
ⅱ E22は、5行目以下において、1個目の測定用のデータ名について、D22・4行以下のデータ名と同一のものを使用し、2個目の測定について、「LIMIT」を「LIMITH2」に、「lmt_gain」を「lmtH2_gain」に変更して付け加えている。さらに、D22では「data」で定義される引数を2測定用に「h1」「h2」とし、1個目については、D22と同一の関数を用いて「h1」と「LIMIT」を比較し、2個目のデータについては「h2」と「LIMITH2」を比較するよう変更を加えている。
ⅲ E23は、1~2行目がD23・1~2行目と一致し、6~7行目がこれに「H2」を付加したものである。9~10行がD23・3~4行目と一致する。
⑪ A11
この部分は、被告(1)と原告(1)とで一致する。
⑫ A12
A12は、E24、E25、E26を除いて一致する。
E24は、原告(1)には存在しない。
E25は、原告(1)A12・7行の「outp(PPICW,0x88);」を「outpp(PPJCW+H2,0x80);」「outpp(PPICW+H2,0x88);」としたものである。
E26は、原告(1)A12・18~23行のデータ名に「H2」を付加したものである。
⑬ A13
A13は、E27とD27、E28とD28、E29とD29、E30とD30を除いて一致する。
⑭ A14
A14は、E31とD31、E32とD32を除いて一致する。
(2) T62352.C
① A1
被告(2)A1は、I1~I4に、2測定用に変数名に「H2」が追加されているほかは、原告(2)A1と同一である。
② A2
被告(2)のうち、A2は、E1、E2の追加、I5の挿入以外は、原告(2)A2と一致する。
被告(2)のうち、E1は、原告(2)A2・2~3行目に「hanteiH2」「data_a, data_b」の型宣言を追加したものであり、E2は、原告(2)A2・13行目「run_mode = FAILSTOP;」を「run_mode = ALLTEST;/*FAILSTOP*;/」に変更したものである。
③ A3
被告(2)と原告(2)は、この部分では一致する。
④ A4
被告(2)は、I6I7、I8、I8B、I9、C1、E5~E11以下の変更が加えられている以外は、原告(2)と一致する。
ⅰ I6に、「BYE BYE !!」をする命令が追加されている。
ⅱ 「case SELF_TST」は、I7~I9、C1、E5~E11の追加変更が加えられている以外は一致する。
a I7は、2個同時測定のため、「data_a」に「ad_clb1()」の値を代入し、2個目のチャンネル「data_b」に「adH2_clb1()」の値を代入する命令を追加している。E3、E4は、原告(2)A4・5行目の「ad_clb1()」をこれらの変数「data_a」「data_b」に変更している。I8、I8Bは、プリント文を追加挿入している。
b I9、E5、E6は、原告(2)A4・10~11行目の「ad_clb2()」に前記ⅱと同じ手法を加えることにより、2個同時測定を可能にしている。
c C1は、コメント行の追加である。
d E7は、原告(2)A4・14行目を複製して「ALL」を「1」に変更し、「p_wait(5)」を追加している。E8は、原告(2)A4・16~17行目を複製して、変数を「MXDATB」「ad2H2_zero」「ad2H2_gain」に、関数を「ad2cH2_x()」に変更したものである。E9は、原告(2)A4・21行目にE7と同様の変更を加えている。E10は、原告(2)A4・23~24行目にE8と同様の変更を加えている。
e E11は、原告(2)A4・39行目を複製して「outp()」を「outpp()」に、「PPICW」を「PPICW+H2」に変更している。
ⅲ 「case TEST」は、I10、E12、E13、C2、C3の追加を除けば一致する。
a I10は、原告(2)A42行目を複製し、「fail_point」を「failH2_point」に変更したものである。E12は、原告(2)A4「case TEST」3行目「atest(mbox_rd(MXMOdE));」を変更し、「atest(t_mode=mbox_rd(MXMODE));」としたものである。C2、3はコメントである。
b E13は、E12(原告(2)A4「case TEST」5~12行目と同じ)を複製し、変数を「failH2_point」「hanteiH2」に、関数「outpp()」の引数「PPICW」を「PPICW+H2」に変更したものである。
ⅳ 「case DAT_REQ」は、E14、E15を除いて一致する。
a E14は、原告(2)A4「case DAT_REQ」2~3行目に変更を加え、プリント文を追加したものである。
b E15は、E14と原告(2)A4「case DAT_REQ」3~9行目を複製し、変数を「t_dataH2」「MXDATB」に変更したものである。
c 「/* mbox_wr(MXSTAT,0); */」がコメントとして残っている。
ⅴ 「case LMT_REQ」は、E16を除いて、被告(2)と原告(2)が一致する。E16は、原告(2)A4「case LMT_REQ」の文を複製し、変数を「LIMITH2」「MXDATB」としたものである。
ⅵ 「case 20」は、3行目の「for(S = 0 ; mbox_rd(MXCOM)! = 0 ;)」が「for(S = 0 ; tst_cm;)」(E17)に変更されている。
(3) OPU.H
被告プログラム(3)は、I1~I4、E1~E4の変更が加えられている以外は、原告プログラム(3)と一致するところ、これらの変更は、すべて2個測定のためにデータを加える趣旨のものである。
(4) M62352
被告プログラム(4)は、I1~I5、E1~E83の変更が加えられている以外は、原告プログラム(4)と一致する。
ⅰ I1~I5は、2個測定のために追加されたものであり、E1は、変数宣言である。
ⅱ E3~E42、E47~E74、 E80、E81は、2個測定用に組み替えたものであり、原告(4)には存在しない。
ⅲ E43~46は、その1行上の文(原告プログラム(4)に存在する)を複製し、変数を「vmH2」「adH2_gain」「lsbH2」に変更している。
ⅳ E75~E78は、E75、E77で変数「h1」「h2」を追加し、E76、E78で、原告D76、D78に「h1」「h2」に対応する計算を追加したものである。
ⅴ E79~E82は、E79、E81で変数「h1」「h2」を追加し、E80、E82で、原告D80、D82に「h1」「h2」に対応する計算を追加したものである。
ⅵ E83の関数「ch_gainH2_gosa(n)」は、「ch_gain_gosa(n)」(原告プログラムに存在する)を複製し、変数名に「H2」を付したものである。
(三) 上記認定事実によれば、被告プログラム(1)~(4)は、いずれも原告プログラム(1)~(4)(本件プログラム(4)、M62352)と一致する命令文が多数含まれており、相違点のうちにも、原告プログラム(1)~(4)の関数を複製した上、これに2個目のICに対応する「H2」等の変数を追加し、2個目のICの測定、計算を可能にする趣旨の変更が多数加えられていることが認められる。また、被告プログラム中には、原告プログラム中の不必要となった命令文をコメントとして残したものが、そのまま多数記載されていることも認められる。
また、被告は、本訴における本人尋問において、被告プログラムの主たる開発項目は、波形発生装置の高速化、CPUの高速化を図るためノートパソコンのCPUを使用すること、CPUのインターフェイスについての回路の開発、波形発生回路の開発等のハードウエアの部分であり、三菱電機からはソフトウエアを変更しないように言われていたと供述し、「2個のICを同時に測定する機能を有するマイコンテストボックス」の作成とは、被告が原告に在職していた時に作成したプログラムのテスト仕様をそのまま受け継いで、2個のICを同時測定できる治具を作成することを意味するという趣旨の供述もしている。
これらの事実を総合すれば、被告プログラム(1)~(4)は、原告プログラム(1)~(4)に2個のICを同時に測定できるように、ハードウエアをつなぐ部分に改変を加えたものであり、原告プログラム(1)~(4)と同一の範囲にあるプログラムとはいえないが、IC測定の順序、処理内容は同一であり、原告プログラム(1)~(4)の中の命令文と同一又は微細な変更を加えた命令文が多用されているものであるから、ソフトウエアとして、原告プログラム(1)~(4)と全く異なった程度には改変がなされていないものである。したがって、被告プログラム(1)~(4)は、原告プログラムの一部を複製した上、全体としてこれを翻案したものに当たるというべきであり、他に上記認定を覆すに足りる証拠はない。
(四) 以上によれば、被告は、原告プログラム(1)~(4)、すなわち本件プログラム(4)、(6)及び(7)を翻案したものと認められる。
なお、被告は、本訴の本人尋問において、三菱電機から、M62393シリーズすべてのプログラムの貸与を受けたことを認める旨の供述をしており、被告が原告を退社した後は、三菱電機から原告に対し、新規のマイコンテストボックス納品の依頼はなく、旧製品の再注文が2回あったのみであること(原告代表者本人)を考慮すると、被告がM62352以外についても三菱電機からマイコンテストボックスの注文を受けていた疑いも残るところである。しかし、三菱電機の社員である【C】が、三菱電機において測定値部分に変更を加えた本件プログラムの解析を依頼する目的で、被告にプログラムをメールで送付していた事実があること(乙1、被告本人)を考慮すると、前記事実だけでは、被告がM62352(本件プログラム(4))以外のプログラムについても、同様の複製、翻案を行ったと推認することはできず、他に右事実を認めるに足りる証拠はない。
4 争点(四)(三菱電機の複製権、翻案権)について
被告は、三菱電機の複製権、翻案権に基づいて、本件プログラムの複製、翻案を行ったと主張するので、この点について検討する。
上記2によれば、三菱電機は、基本契約に基づき、原告からハードウエアであるマイコンテストボックス及びこれに搭載されたソフトウエアを購入した者であるから、プログラムの著作物の複製物の所有者に該当し、自ら当該著作物を電子計算機において利用するために必要と認められる限度において、当該著作物の複製又は翻案(これにより創作した二次的著作物の複製を含む。)をすることができる(著作権法47条の2第1項)。
しかし、著作権法47条の2第1項は、プログラムの複製物の所有者にある程度の自由を与えないとコンピュータが作動しなくなるおそれがあることから、自らプログラムを使用するに必要と認められる限度での複製や翻案を認めたものであって、同項にいう「自ら当該著作物を電子計算機において利用するために必要な限度」とは、バックアップ用複製、コンピュータを利用する過程において必然的に生ずる複製、記憶媒体の変換のための複製、自己の使用目的に合わせるための複製等に限られており、当該プログラムを素材として利用して、別個のプログラムを作成することまでは含まれないものと解される。
以上によれば、三菱電機は、メインテナンス等の本件プログラムを利用する過程において必要な限度において、本件プログラムを複製、翻案する権限を有しているに止まり、1個のICを測定する機能を有する本件プログラムを素材として利用して、2個のICを同時に測定する新しいプログラムを作成する権限(複製権)を有していたとは認められず、他にこれを認めるに足りる証拠はない。(なお、三菱電機の【C】は、原告に対し、測定規格値の書いてある部分のファイルについては、規格値を変更し、システム制御プログラムとリンクしてROMにプログラムを焼き付けてマイコンテストボックスに装着して使用することもあると述べており〔甲45、原告代表者本人〕、三菱電機が有する権限は、著作権法47条の2第1項の趣旨に鑑みて、この限度に止まるというべきである。)。
5 争点(五)(損害額)
以上の認定によれば、被告は、本件プログラム(4)、(6)及び(7)を翻案して原告の著作権を侵害したものであるところ、被告が著作権侵害行為を行うにつき、少なくとも過失があることは明らかであるから、被告はこれによって、原告が被った損害を賠償する責任を負うものというべきである。
(一) 被告による本件プログラムの翻案による損害額
証拠(甲48の1、2)によれば、被告が原告を退社する前、三菱電機から原告に対し、1994年(平成6年)11月29日付けで、M62393について166万円の見積書が出されており、1995年(平成7年)3月14日付けで、FT-62425FP-MT1200について、287万8000円の見積書が出されていることが認められる。他に特段の資料もないから、原告が三菱電機に対し、新規にマイコンテストボックスを納入する際の販売価格は、右の平均をとって226万9000円であると推認するのが相当である。
前記4のとおり、被告は、本件プログラム(4)、(6)、(7)の3つのプログラムを翻案したものであるが、証拠(甲36の1~4)によれば、本件プログラム(6)及び(7)は、本件プログラム(4)(M62352)を構成し、ともに1台のテストボックスに搭載されるプログラムであることが認められ、これらプログラム及びこれを搭載したハードウエアであるマイコンテストボックスの販売価格は、前記1台当たりの平均価格である226万9000円と推定するのが相当である。
そして、原告代表者、被告ともに、プログラム作成に必要な経費は人件費がほとんどで、その余は材料費又は組立工賃であり、利益率は、販売価格の約6割であると供述していることを考慮すると、被告が、本件プログラム(4)、(6)、(7)の翻案を行ったことにより、原告が失った得べかりし利益の額は、前記価格の6割である136万1400円とみるのが相当である。
この点につき、原告は、被告が原告を退社する直前3か月間における本件ソフトウエア類による原告の売上は453万円であるから、本訴を提起した平成10年9月までの予想利益は3261万6000円であると主張する。しかし、原告において、マイコンテストボックスの売上が、定常的に3か月当たり453万円の割合で継続していたことを認めるに足りる証拠はない。
したがって、原告は、被告に対し、被告の前記不法行為により原告が受けた損害として、民法709条に基づき、136万1400円を請求することができる。
(二) 弁護士費用
本件事案の内容、審理経過、認容額等に鑑みると、原告が被告に請求し得る弁護士費用は、20万円とするのが相当である。
(三) よって、原告が被告に対して請求し得る損害賠償額は、156万1400円となる。
第5結論
以上のとおりであるから、原告の請求は、主文掲記の限度において理由がある。
(裁判長裁判官 小松一雄 裁判官 阿多麻子 裁判官 前田郁勝)
<以下省略>